package Chapter05;

import com.sun.org.apache.bcel.internal.generic.RETURN;
import com.sun.org.apache.regexp.internal.RE;

import java.awt.*;

/**
 * 策略模式的简单应用
 * 接口中可定义常量,也可以定义方法，还有一种特殊接口,其内部是空的,这种接口起到一个标记作用
 * Created by a on 2017/6/11.
 */
public class Test117 {

    public static void main(String[] args) {
        System.out.println("用户选择了GIF格式");
        ImageSaver saver = TypeChooser.getSaver("GIF    ");
        saver.save();
        System.out.println("用户选了JPEG格式");
        saver = TypeChooser.getSaver("JPEG");
        saver.save();
        System.out.println("用户选择了PNG格式");
        saver = TypeChooser.getSaver("PNG");
        saver.save();

    }


}

interface ImageSaver{
    void save();
}


class GIFSaver implements ImageSaver{
    @Override
    public void save() {
        System.out.println("将图片保存为GIF格式");
    }
}
class JPEGSaver implements ImageSaver{
    @Override
    public void save() {
        System.out.println("将图片保存为JPEG格式");
    }
}
class PNGSaver implements ImageSaver{
    @Override
    public void save() {
        System.out.println("将图片保存为PNG格式");
    }
}

class TypeChooser {
    public static ImageSaver getSaver(String type){
        if (type.equalsIgnoreCase("GIF")){
            return new GIFSaver();
        }else if (type.equalsIgnoreCase("JpeG")){
            return new JPEGSaver();
        }else if (type.equalsIgnoreCase("PNG")){
            return new PNGSaver();
        }else {
            return null;
        }
    }
}

